
//声明 reducer 函数
let countReducer = (state=100, action) => {
  //判断
  switch(action.type){
    case 'add':
      return state + action.payload;
    case 'sub':
      return state - action.payload;   
    // reducer 函数是一个『同步回调』, 且该回调第一次执行的返回值, 就是状态的初始值
    // 该行代码一定要添加, 如果不加, 则 store 的内部状态值将变为 undefined
    default:
      return state;
  }
}

//封装创建 action 对象的函数   『action creator』   creator 创造者
// {type: 'add', payload: 1}   action 对象
export function addAction(payload){
  return {type: 'add', payload: payload};
}

//创建 sub action 对象的函数   
export let subAction = payload => ({type: 'sub', payload});


//封装 action-creator
export let asyncAddAction = (payload) => {
  return (dispatch) => {
    //启动定时器
    setTimeout(() => {
      //更新状态
      dispatch({type: 'add', payload: payload});
    }, 1000)
  }
}

export default countReducer;